<?php
/**
 * 计算两点地理坐标之间的距离
 * @param  Decimal $longitude1 起点经度
 * @param  Decimal $latitude1 起点纬度
 * @param  Decimal $longitude2 终点经度
 * @param  Decimal $latitude2 终点纬度
 * @param  Int $unit 单位 1:米 2:公里
 * @param  Int $decimal 精度 保留小数位数
 * @return Decimal
 */
function getDistance($longitude1, $latitude1, $longitude2, $latitude2, $unit = 2, $decimal = 2)
{

    $EARTH_RADIUS = 6370.996; // 地球半径系数
    $PI = 3.1415926;

    $radLat1 = $latitude1 * $PI / 180.0;
    $radLat2 = $latitude2 * $PI / 180.0;

    $radLng1 = $longitude1 * $PI / 180.0;
    $radLng2 = $longitude2 * $PI / 180.0;

    $a = $radLat1 - $radLat2;
    $b = $radLng1 - $radLng2;

    //计算距离
    $distance = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));
    $distance = $distance * $EARTH_RADIUS * 1000;

    //长度单位
    $distanceUnit = 'm';
    if ($unit == 2) {
        $distance = $distance / 1000;
        $distanceUnit = 'km';
    }
    //返回距离
    return round($distance, $decimal) . $distanceUnit;

}

// 起点坐标(朝阳区)
$longitude1 = 116.43;
$latitude1 = 39.92;
// 终点坐标（东莞市）
$longitude2 = 113.75;
$latitude2 = 23.05;

$distance = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 1);
echo $distance; //1892728.9m
echo "<br>";
$distance = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 2);
echo $distance; //1892.73km

?>